#include "UdpServer.hpp"
#include "User.hpp"

int main(int argc, char *argv[])
{
	if (argc != 2)
	{
		std::cerr << "Usage: " << argv[0] << "localport" << std::endl;
		exit(USAGE_ERR);
	}
	uint16_t port = std::stoi(argv[1]);

	ENABLE_CONSOLE_LOG(); // 开启日志

	// 用户管理模块
	std::shared_ptr<UserManger> um = std::make_shared<UserManger>();

	// 网络模块
	std::unique_ptr<UdpServer> svr_uptr = std::make_unique<UdpServer>(port);

	// 注册服务
	svr_uptr->RegisterService(
			[&um](InetAddr& id) {um->AddUser(id);},  // 注册用户的回调方法
			[&um](int sockfd,const std::string& message){um->Router(sockfd,message);},
			[&um](InetAddr& id){um->DelUser(id);});  // 删除用户

	svr_uptr->InitServer(); // 初始化服务器
	
	svr_uptr->Start();

	return 0;
}